package 多线程和队列.淺拷貝深拷貝;

/**
 * 淺拷貝
 * 浅拷贝会创建一个新对象，新对象属性值有着原对象属性值
 * 的准确拷贝。
 * 当属性是基本类型，则直接进行值传递，是两份不同的内
 * 容，当对其中一个修改，不会影响另外一个。
 * 当属性是引用类型，则拷贝的是该引用类型的内存地址。
 * 所以就会出现开篇说到的问题，当其中一个对象改变了内
 * 存地址，则另外一个对象也会发生改变，因为他们两个共
 * 用同一个内存地址
 * @author Amos  2022/12/4
 */
public class ShallowCopyDemo {
    public static void main(String[] args) {
        Person person = new
                Person("zhangsan",18);
        Student s1 = new Student();
        s1.setPerson(person);
        s1.setName("lisi");
        s1.setAge(19);
//拷贝
        Student s2 = (Student) s1.clone();
        s2.setPerson(person);
        s2.setName("wangwu");
        s2.setAge(20);
        Person person1 = s2.getPerson();
        person1.setName("zhaoliu");

        System.out.println("s1："+s1.toString());
        System.out.println("s2："+s2.toString());
    }
}
